This Background is intended to provide the basic context of this patent application and it is not intended to describe a specific problem to be solved.
Recent technology shifts have enabled widespread availability of multicore processors, and it is predicted that most computing platforms of the future, ranging from hand-held device, laptops, desktops and servers will have massive numbers of processors. As a result, software of the future needs to be more concurrent than ever to make better use of parallel hardware.
However, concurrent programs are hard to design, develop and debug. One of the key challenges in concurrent programming is avoiding interference between different threads that access and update the same shared variables. When a thread reads and/or updates certain shared variables in a critical section of code, it is usually necessary to ensure that other threads do not observe intermediate values of these shared variables produced by first thread and other threads should not update these variables either. This property is called isolation. Isolation helps avoid undesirable outcomes arising out of unexpected interactions between different threads and it enables local reasoning (that is, it enables programmers to reason locally about each thread, without worrying about interactions from other threads).